package com.example.club.test.flow.demo1

import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.club.R
import com.example.club.databinding.ActivityDebounce2Binding
import com.example.lib_common.utils.ToastUtils
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
//安卓中如何实现编辑框搜索建议优化，输入框等场景，我们不应该在用户每输入一个字符时就立刻发起一条网络请求，
// 而是应该在一定时间的停顿之后再发起网络请求。如果用户停顿了一段时间，很有可能说明用户已经结束了快速输入，
// 开始期待一些搜索建议了。这样就能有效地避免发起无效网络请求的情况
class DebounceActivity2 : AppCompatActivity() {

    private lateinit var searchEditText: EditText
    private var searchJob: Job? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_debounce2)

        searchEditText = findViewById(R.id.searchEditText)
        setupSearchEditText()


    }

    private fun setupSearchEditText() {
        searchEditText.addTextChangedListener(object : TextWatcher {
            override fun afterTextChanged(s: Editable?) {
                searchJob?.cancel()

                searchJob = CoroutineScope(Dispatchers.Main).launch {
                    delay(1000) // 防抖延迟--当停止输入时，延迟1秒执行搜索操作
                    s?.toString()?.takeIf { it.length >= 3 }?.let { query ->// it.length >= 3  输入长度大于等于3时执行搜索（多加的一个判断条件）
                        ToastUtils.showLong(this@DebounceActivity2, query)
                    }
                }
            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
        })
    }



}